{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Populating the interactive namespace from numpy and matplotlib\n"
     ]
    }
   ],
   "source": [
    "%pylab inline\n",
    "import matplotlib.pyplot as plt\n",
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "import numpy.random as rng\n",
    "import pandas.io.data as web\n",
    "import numpy as np\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"# we modify this data organizing slightly to get two symbols\\ndef get_prices(symbol):\\n    start, end = '2007-05-02', '2016-04-11'\\n    data = web.DataReader(symbol, 'yahoo', start, end)\\n    data=pd.DataFrame(data)\\n    prices=data['Adj Close']\\n    prices=prices.astype(float)\\n    return prices\\n\\ndef get_returns(prices):\\n        return ((prices-prices.shift(-1))/prices)[:-1]\\n    \\ndef get_data(list):\\n    l = []\\n    for symbol in list:\\n        rets = get_returns(get_prices(symbol))\\n        l.append(rets)\\n    return np.array(l).T\\n\\ndef sort_data(rets):\\n    ins = []\\n    outs = []\\n    for i in range(len(rets)-100):\\n        ins.append(rets[i:i+100].tolist())\\n        outs.append(rets[i+100])\\n    return np.array(ins), np.array(outs)\\n        \\n\""
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''# we modify this data organizing slightly to get two symbols\n",
    "def get_prices(symbol):\n",
    "    start, end = '2007-05-02', '2016-04-11'\n",
    "    data = web.DataReader(symbol, 'yahoo', start, end)\n",
    "    data=pd.DataFrame(data)\n",
    "    prices=data['Adj Close']\n",
    "    prices=prices.astype(float)\n",
    "    return prices\n",
    "\n",
    "def get_returns(prices):\n",
    "        return ((prices-prices.shift(-1))/prices)[:-1]\n",
    "    \n",
    "def get_data(list):\n",
    "    l = []\n",
    "    for symbol in list:\n",
    "        rets = get_returns(get_prices(symbol))\n",
    "        l.append(rets)\n",
    "    return np.array(l).T\n",
    "\n",
    "def sort_data(rets):\n",
    "    ins = []\n",
    "    outs = []\n",
    "    for i in range(len(rets)-100):\n",
    "        ins.append(rets[i:i+100].tolist())\n",
    "        outs.append(rets[i+100])\n",
    "    return np.array(ins), np.array(outs)\n",
    "        \n",
    "'''"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "\n",
    "def get_prices(symbol):\n",
    "    start, end = '2007-05-02', '2016-04-11'\n",
    "    data = web.DataReader(symbol, 'yahoo', start, end)\n",
    "    data=pd.DataFrame(data)\n",
    "    prices=data['Adj Close']\n",
    "    prices=prices.astype(float)\n",
    "    return prices\n",
    "\n",
    "def get_returns(prices):\n",
    "        return ((prices-prices.shift(-1))/prices)[:-1]\n",
    "    \n",
    "def get_data(list):\n",
    "    l = []\n",
    "    for symbol in list:\n",
    "        rets = get_returns(get_prices(symbol))\n",
    "        l.append(rets)\n",
    "    return np.array(l).T\n",
    "        \n",
    "symbol_list = ['C', 'GS']\n",
    "rets = get_data(symbol_list)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def lstm_iterator(raw_data, num_steps, data_size):\n",
    "  batch_size=1\n",
    " \n",
    "  raw_data = np.array(raw_data, dtype=np.float32)\n",
    "\n",
    "  data_len = len(raw_data)\n",
    "  batch_len = data_len // batch_size\n",
    "  data = np.zeros([batch_size, batch_len, data_size], dtype=np.float32)\n",
    "  for i in range(batch_size):\n",
    "    data[i] = raw_data[batch_len * i:batch_len * (i + 1),:]\n",
    "\n",
    "  epoch_size = (batch_len - 1) // num_steps\n",
    "\n",
    "  if epoch_size == 0:\n",
    "    raise ValueError(\"epoch_size == 0, decrease batch_size or num_steps\")\n",
    "\n",
    "  for i in range(epoch_size):\n",
    "    x = data[:, i*num_steps:(i+1)*num_steps]\n",
    "    y = data[:, i*num_steps+1:(i+1)*num_steps+1]\n",
    "    yield (x[0], y[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"symbol_list = ['C', 'GS']\\nrets = get_data(symbol_list)\\nins, outs = sort_data(rets)\\nins = ins.transpose([0,2,1]).reshape([-1, len(symbol_list) * 100])\\ndiv = int(.8 * ins.shape[0])\\ntrain_ins, train_outs = ins[:div], outs[:div]\\ntest_ins, test_outs = ins[div:], outs[div:]\\n\\n#normalize inputs\\ntrain_ins, test_ins = train_ins/np.std(ins), test_ins/np.std(ins)\""
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''symbol_list = ['C', 'GS']\n",
    "rets = get_data(symbol_list)\n",
    "ins, outs = sort_data(rets)\n",
    "ins = ins.transpose([0,2,1]).reshape([-1, len(symbol_list) * 100])\n",
    "div = int(.8 * ins.shape[0])\n",
    "train_ins, train_outs = ins[:div], outs[:div]\n",
    "test_ins, test_outs = ins[div:], outs[div:]\n",
    "\n",
    "#normalize inputs\n",
    "train_ins, test_ins = train_ins/np.std(ins), test_ins/np.std(ins)'''"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "#sess = tf.InteractiveSession()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "class LSTMModel(object):\n",
    "    def __init__(self, num_steps, num_samples):#, config):\n",
    "        symbol_list = ['C', 'GS']\n",
    "\n",
    "        positions = tf.constant([-1,0,1]) #long, neutral or short\n",
    "        num_positions = 3\n",
    "        num_symbols = len(symbol_list)\n",
    "        self.num_samples = num_samples\n",
    "        self.num_steps = num_steps\n",
    "\n",
    "        #n_input = num_symbols * 100\n",
    "\n",
    "        hidden_size=21\n",
    "        n_classes = num_positions * num_symbols\n",
    "\n",
    "        #self.num_steps = tf.placeholder(tf.int64)\n",
    "\n",
    "        # define placeholders \n",
    "        self.inputs_ = tf.placeholder(tf.float32, [None, num_symbols])\n",
    "        self.targets_ = tf.placeholder(tf.float32, [None,  num_symbols])\n",
    "\n",
    "        cell = tf.nn.rnn_cell.BasicLSTMCell(hidden_size, forget_bias=0.0)\n",
    "        #cell = tf.nn.rnn_cell.MultiRNNCell([cell] * config.num_layers)\n",
    "        cell = tf.nn.rnn_cell.InputProjectionWrapper(cell,  num_symbols)\n",
    "        cell = tf.nn.rnn_cell.OutputProjectionWrapper(cell, n_classes)\n",
    "\n",
    "\n",
    "        outputs=[]\n",
    "        self.initial_state = cell.zero_state(1, tf.float32)\n",
    "        state = self.initial_state\n",
    "        time_step = 0\n",
    "        \n",
    "        '''with tf.variable_scope(\"RNN\"):\n",
    "            def body(x):\n",
    "                inp = self.inputs_[time_step,:]\n",
    "                inp = tf.reshape(inp, [1,-1])\n",
    "                (cell_output, state) = cell(inp, state)\n",
    "                outputs.append(cell_output)\n",
    "                return \n",
    "\n",
    "            def condition(x):\n",
    "                return tf.reduce_sum(x) < 100\n",
    "        \n",
    "            tf.while_loop(condition, body, [x])'''\n",
    "            \n",
    "        with tf.variable_scope(\"RNN\"):\n",
    "            for time_step in range(self.num_steps):   #####num_steps???\n",
    "                if time_step > 0: tf.get_variable_scope().reuse_variables()    \n",
    "                inp = self.inputs_[time_step,:]\n",
    "                inp = tf.reshape(inp, [1,-1])\n",
    "                (cell_output, state) = cell(inp, state)\n",
    "                outputs.append(cell_output) #[6,]\n",
    "\n",
    "        self.final_state = state \n",
    "\n",
    "        y = tf.reshape(tf.concat(1, outputs), [-1, n_classes])\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "        # loop through symbol, taking the columns for each symbol's bucket together\n",
    "        pos = {}\n",
    "        sample_n = {}\n",
    "        sample_mask = {}\n",
    "        symbol_returns = {}\n",
    "        relevant_target_column = {}\n",
    "        for i in range(num_symbols):\n",
    "            # isolate the buckets relevant to the symbol and get a softmax as well\n",
    "            symbol_probs = y[:,i*num_positions:(i+1)*num_positions]\n",
    "            symbol_probs_softmax = tf.nn.softmax(symbol_probs) # softmax[i, j] = exp(logits[i, j]) / sum(exp(logits[i]))\n",
    "            # sample probability to chose our policy's action\n",
    "            sample = tf.multinomial(tf.log(symbol_probs_softmax), num_samples)\n",
    "            for sample_iter in range(num_samples):\n",
    "                sample_n[i*num_samples + sample_iter] = sample[:,sample_iter]\n",
    "                pos[i*num_samples + sample_iter] = tf.reshape(sample_n[i*num_samples + sample_iter], [-1]) - 1\n",
    "                symbol_returns[i*num_samples + sample_iter] = tf.mul(\n",
    "                                                                    tf.cast(pos[i*num_samples + sample_iter], float32), \n",
    "                                                                     self.targets_[:,i])\n",
    "\n",
    "                sample_mask[i*num_samples + sample_iter] = tf.cast(tf.reshape(tf.one_hot(sample_n[i*num_samples + sample_iter], 3), [-1,3]), float32)\n",
    "                relevant_target_column[i*num_samples + sample_iter] = tf.reduce_sum(\n",
    "                                                            symbol_probs * sample_mask[i*num_samples + sample_iter],1)\n",
    "\n",
    "\n",
    "\n",
    "        daily_returns_by_symbol_ = tf.concat(1, [tf.reshape(t, [-1,1]) for t in symbol_returns.values()])\n",
    "        daily_returns_by_symbol = tf.transpose(tf.reshape(daily_returns_by_symbol_, [-1,2,num_samples]), [0,2,1]) #[?,5,2]\n",
    "        daily_returns = tf.reduce_mean(daily_returns_by_symbol, 2) # [?,5]\n",
    "\n",
    "        total_return = tf.reduce_prod(daily_returns+1, 0)\n",
    "        z = tf.ones_like(total_return) * -1\n",
    "        self.total_return = total_return = tf.add(total_return, z)\n",
    "\n",
    "\n",
    "        ann_vol = tf.mul(\n",
    "            tf.sqrt(tf.reduce_mean(tf.pow((daily_returns - tf.reduce_mean(daily_returns, 0)),2),0)) ,\n",
    "            np.sqrt(252)\n",
    "            )\n",
    "        self.sharpe = tf.div(total_return, ann_vol)\n",
    "        #Maybe metric slicing later\n",
    "        #segment_ids = tf.ones_like(daily_returns[:,0])\n",
    "        #partial_prod = tf.segment_prod(daily_returns+1, segment_ids)\n",
    "\n",
    "\n",
    "        training_target_cols = tf.concat(1, [tf.reshape(t, [-1,1]) for t in relevant_target_column.values()])\n",
    "        ones = tf.ones_like(training_target_cols)\n",
    "        gradient_ = tf.nn.sigmoid_cross_entropy_with_logits(training_target_cols, ones)\n",
    "\n",
    "        gradient = tf.transpose(tf.reshape(gradient_, [-1,2,num_samples]), [0,2,1]) #[?,5,2]\n",
    "\n",
    "        #cost = tf.mul(gradient , daily_returns_by_symbol_reshaped)\n",
    "        #cost = tf.mul(gradient , tf.expand_dims(daily_returns, -1))\n",
    "        cost = tf.mul(gradient , tf.expand_dims(total_return, -1))\n",
    "        #cost = tf.mul(gradient , tf.expand_dims(sharpe, -1))\n",
    "\n",
    "        self.optimizer = tf.train.GradientDescentOptimizer(0.0001).minimize(cost)\n",
    "        self.costfn = tf.reduce_mean(cost)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def run_train_results(m, epoch):\n",
    "    state = m.initial_state.eval()\n",
    "    full_feed = {m.inputs_: rets[:-1], m.targets_: rets[1:], m.initial_state: state}\n",
    "    \n",
    "    t,s, c = session.run([ m.total_return, m.sharpe, m.costfn], feed_dict=full_feed)\n",
    "    t = np.mean(t)\n",
    "    s = np.mean(s)\n",
    "    print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\",c, \"total return=\", \"{:.9f}\".format(t), \n",
    "         \"sharpe=\", \"{:.9f}\".format(s))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def run_epoch(m, epoch):\n",
    "    \n",
    "    full_feed = {m.inputs_: rets[:-1], m.targets_: rets[1:]}\n",
    "    state = m.initial_state.eval()\n",
    "    for step, (x, y) in enumerate(lstm_iterator(rets,20,2 )):\n",
    "        #m.num_steps = len(x)\n",
    "        feed_dict = {m.inputs_: x, m.targets_: y, m.initial_state: state}\n",
    "        _ , state = session.run([m.optimizer, m.final_state], feed_dict=feed_dict)\n",
    "        \n",
    "    '''if (epoch+1)%2== 0:\n",
    "        t,s, c = session.run([ m.total_return, m.sharpe, m.costfn], feed_dict=feed_dict)#full_feed)#.reshape(1,-1).T})\n",
    "        t = np.mean(t)\n",
    "        s = np.mean(s)\n",
    "        print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\",c, \"total return=\", \"{:.9f}\".format(t), \n",
    "             \"sharpe=\", \"{:.9f}\".format(s))'''"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:<tensorflow.python.ops.rnn_cell.BasicLSTMCell object at 0x1f464ed30>: Using a concatenated state is slower and will soon be deprecated.  Use state_is_tuple=True.\n",
      "WARNING:tensorflow:<tensorflow.python.ops.rnn_cell.BasicLSTMCell object at 0x1f464ed30>: Using a concatenated state is slower and will soon be deprecated.  Use state_is_tuple=True.\n",
      "WARNING:tensorflow:<tensorflow.python.ops.rnn_cell.BasicLSTMCell object at 0x1f464ed30>: Using a concatenated state is slower and will soon be deprecated.  Use state_is_tuple=True.\n",
      "WARNING:tensorflow:<tensorflow.python.ops.rnn_cell.BasicLSTMCell object at 0x1f464ed30>: Using a concatenated state is slower and will soon be deprecated.  Use state_is_tuple=True.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "getting results...\n",
      "Epoch: 0001 cost= -0.50711 total return= -0.731922448 sharpe= -2.518890381\n",
      "getting results...\n",
      "Epoch: 0002 cost= -0.479199 total return= -0.690995097 sharpe= -2.211014509\n",
      "getting results...\n",
      "Epoch: 0003 cost= 0.802528 total return= 1.158372164 sharpe= 4.109907150\n",
      "getting results...\n",
      "Epoch: 0004 cost= -0.504468 total return= -0.728531718 sharpe= -2.387005329\n",
      "getting results...\n",
      "Epoch: 0005 cost= -0.607678 total return= -0.877253473 sharpe= -2.718842506\n",
      "getting results...\n",
      "Epoch: 0006 cost= 0.449566 total return= 0.648839116 sharpe= 2.242624998\n",
      "getting results...\n",
      "Epoch: 0007 cost= 0.223947 total return= 0.323118806 sharpe= 0.947408140\n",
      "getting results...\n",
      "Epoch: 0008 cost= 0.29168 total return= 0.421271563 sharpe= 1.259648323\n",
      "getting results...\n",
      "Epoch: 0009 cost= -0.353979 total return= -0.511379957 sharpe= -1.703359842\n",
      "getting results...\n",
      "Epoch: 0010 cost= -0.383745 total return= -0.553670168 sharpe= -1.732698441\n"
     ]
    }
   ],
   "source": [
    "with tf.Graph().as_default(), tf.Session() as session:\n",
    "    # initialize variables to random values\n",
    "    #init = tf.initialize_all_variables()\n",
    "    #sess.run(init)\n",
    "    # run optimizer on entire training data set many times\n",
    "    #train_size = train_ins.shape[0]\n",
    "    with tf.variable_scope(\"model\", reuse=None):#, initializer=init):\n",
    "        m = LSTMModel(num_steps = 20, num_samples = 5)#, config=config)\n",
    "    with tf.variable_scope(\"model\", reuse=True):#, initializer=init):\n",
    "        mvalid = LSTMModel(num_steps = len(rets) -1, num_samples = 1)#, config=config)\n",
    "    tf.initialize_all_variables().run()\n",
    "    for epoch in range(10):\n",
    "        #start = rng.randint(train_size-50)\n",
    "        #batch_size = rng.randint(2,25)\n",
    "        #end = min(train_size, start+batch_size)\n",
    "\n",
    "        run_epoch(m, epoch )\n",
    "        print('getting results...')\n",
    "        run_train_results(mvalid, epoch)\n",
    "        '''sess.run(optimizer, feed_dict={inputs_: train_ins[start:end], targets_: train_outs[start:end]})#.reshape(1,-1).T})\n",
    "        # every 1000 iterations record progress\n",
    "        if (epoch+1)%100== 0:\n",
    "            t,s, c = sess.run([ total_return, sharpe, costfn], feed_dict={inputs_: train_ins, targets_: train_outs})#.reshape(1,-1).T})\n",
    "            t = np.mean(t)\n",
    "            s = np.mean(s)\n",
    "            print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\",c, \"total return=\", \"{:.9f}\".format(t), \n",
    "                 \"sharpe=\", \"{:.9f}\".format(s))\n",
    "            #print(t)'''"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<bound method Tensor.eval of <tf.Tensor 'RNN/BasicLSTMCell_19/concat:0' shape=(1, 42) dtype=float32>>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "state.eval"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# in sample results\n",
    "#init = tf.initialize_all_variables()\n",
    "#sess.run(init)\n",
    "d, t = sess.run([daily_returns, pos[0]], feed_dict=feed_dict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.02278614, -0.01349073],\n",
       "       [ 0.01645574,  0.00046793],\n",
       "       [-0.06229091, -0.03424059],\n",
       "       [-0.02301918,  0.00290978],\n",
       "       [-0.01444814, -0.00732817],\n",
       "       [ 0.        , -0.00972121],\n",
       "       [ 0.00513662,  0.00950007],\n",
       "       [ 0.03661115,  0.02413904],\n",
       "       [-0.00243609,  0.01114777],\n",
       "       [-0.00534623, -0.00740445],\n",
       "       [-0.0391589 , -0.01933518],\n",
       "       [ 0.00744369,  0.0029232 ],\n",
       "       [ 0.0018748 ,  0.00951207],\n",
       "       [ 0.00845272,  0.00980073],\n",
       "       [-0.01468148, -0.01574339],\n",
       "       [-0.01610275, -0.03067165],\n",
       "       [-0.00137798,  0.00831226],\n",
       "       [ 0.00504581,  0.01337255],\n",
       "       [ 0.02328266,  0.00077818],\n",
       "       [ 0.0101487 ,  0.00700935]], dtype=float32)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10e3df898>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# equity curve\n",
    "for i in range(5):\n",
    "    plot(np.cumprod(d[:,[i]]+1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x11882d5c0>]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1168ed6a0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot(t)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "#out of sample results\n",
    "d, t = sess.run([daily_returns, total_return], feed_dict={x: test_ins, y_: test_outs})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1339154e0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#out of sample results\n",
    "for i in range(5):\n",
    "    plot(np.cumprod(d[:,[i]]+1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.4.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
